class Solution:
    def maximumSwap(self, num: int) -> int:
        number=[]
        while num>0:
            number.append(num%10)
            num=num//10
        number.reverse()
        stack=[-1]*len(number)
        i=len(number)-2
        stack[-1]=len(number)-1
        while i>=0:
            if number[i]>number[stack[i+1]]:
                stack[i]=i
            else:
                stack[i]=stack[i+1]
            i-=1
        for i in range(len(number)-1):
            if number[stack[i]]!=number[i]:
                number[i],number[stack[i]]=number[stack[i]],number[i]
                break
        return sum([i*(10**(len(number)-index-1)) for index,i in enumerate(number)])

'''
执行用时：
32 ms
, 在所有 Python3 提交中击败了
93.91%
的用户
内存消耗：
15 MB
, 在所有 Python3 提交中击败了
5.13%
的用户
'''